package com.源码分析;

import org.junit.Test;

import reactor.core.publisher.ConnectableFlux;
import reactor.core.publisher.Flux;

public class PublishDemo {

	@Test
	// 准备一个ConnectableFlux，它共享这个Flux序列，并以一种背压感知的方式将值发送给订阅者。Prefetch将默认为queue.small_buffer_size。这将有效地把任何类型的序列变成热序列。背压将在订阅时协调
	// publish方法会将一个正常的序列转换成一个可连接的序列。同时该序列不会立刻发送事件，只有在调用connect之后才会开始
	// 有时候，你并不仅仅是希望推迟一个订阅者产生订阅后的执行时间，而且希望可以当订阅者达到一定数量或激活一个策略条件的时候才会触发真正的订阅执行和数据元素的生成下发。
	public void test() {
		ConnectableFlux<String> p = Flux.just("a", "b", "c")
		.publish();
		p.subscribe(x -> {
			System.out.println("x1: " + x);
		});
		//p.connect();
		p.subscribe(x -> {
			System.out.println("x2: " + x);
		});
		p.connect();
	}

}
